package model

import (
	"gin_vue_blog/utils/errmsg"
)

type Category struct {
	ID       uint      `gorm:"primary_key;auto_increment" json:"id"`
	Name     string    `gorm:"type:varchar(20)" json:"name"  validate:"required"`
	Articles []Article `gorm:"foreignKey:Cid"`
}

func CheckCateExist(username string) int {
	var cate Category
	db.Select("id").Where("name=?", username).First(&cate)
	if cate.ID > 0 {
		return errmsg.ERROR_CATEGORY_USERD
	}
	return errmsg.SUCCESS
}

// 更新查询
func CheckUpCate(id int, name string) int {
	var cate Category
	db.Select("id").Where("name=?", id).First(&cate)
	if cate.ID == uint(id) {
		return errmsg.ERROR_CATEGORY_USERD
	} else {
		return errmsg.SUCCESS
	}
}

// 添加分类
func AddCate(data *Category) int {
	err := db.Create(&data).Error
	if err != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}

// 查询分类信息
func GetCateInfo(id int) (Category, int) {
	var cate Category
	db.Model(&cate).Where("id=?", id).Find(&cate)
	return cate, errmsg.SUCCESS
}

// 查询分类列表
func GetCateList(pageSize, pageNum int) ([]Category, int) {
	var users []Category
	err := db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&users).Error
	if err != nil {
		return nil, errmsg.ERROR
	}
	return users, errmsg.SUCCESS
}

// 查询分类信息
func GetCategory(id int) (Category, int) {
	var cate Category
	err := db.Where("id=?", id).First(&cate).Error
	if err != nil {
		return cate, errmsg.ERROR
	}
	return cate, errmsg.SUCCESS
}

// 删除分类
func DeleteCate(id int) int {
	var cate Category
	err := db.Model(&cate).Where("id=?", id).Delete(&cate).Error
	if err != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}

// 编辑分类
func EditCate(id int, data *Category) int {
	var cate Category
	maps := make(map[string]interface{})
	maps["name"] = data.Name
	err := db.Model(&cate).Where("id=?", id).Updates(maps).Error
	if err != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCESS
}
